Skip to content

Commit cc7b889

Browse files
authored
Release/v1.2.3 (#70)
* nitckpick boilerplate * Add license * Update issue templates * Add shields to readme Mention maintenance, license and that we use vue.js * Set up component boilerplate (#8) * set up component boilerplate * ensure component communication * add initial styling and sass compiler * Restructure folders to better handle styles * Move styling to dedicated scss files * Render lanes from object * Add codefactor shield * generate default epic file and import it * Get ready to render epics * Iterate through the demo * color epic based on their lanes * please linter gods * center lane title * passe correct epics to lanes * wrap things up * Remove useless scss and add more cards to the demo * add boilerplate for toolbar * please linter gods * fix icon hoevring issues * populate and style toolbar * simplify styles * center pen in toolbar * ensure the entire box is hovererd * add meta description * Apply PR updates * Merge demo * set up component boilerplate * ensure component communication * add initial styling and sass compiler * Restructure folders to better handle styles * Move styling to dedicated scss files * Render lanes from object * Add codefactor shield * generate default epic file and import it * Get ready to render epics * Iterate through the demo * color epic based on their lanes * please linter gods * center lane title * passe correct epics to lanes * wrap things up * Remove useless scss and add more cards to the demo * add boilerplate for toolbar * please linter gods * fix icon hoevring issues * populate and style toolbar * simplify styles * center pen in toolbar * ensure the entire box is hovererd * add meta description * Apply PR updates * Bump @vue/cli-plugin-babel from 3.10.0 to 3.11.0 (#6) Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 3.10.0 to 3.11.0. - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v3.11.0/packages/@vue/cli-plugin-babel) Signed-off-by: dependabot-preview[bot] <[email protected]> * upragde saas loader * Use node sass as suggested by yarn * Bump @vue/cli-service from 3.10.0 to 3.11.0 (#5) * Bump @vue/cli-service from 3.10.0 to 3.11.0 Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 3.10.0 to 3.11.0. - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v3.11.0/packages/@vue/cli-service) Signed-off-by: dependabot-preview[bot] <[email protected]> * Update loader * Bump @vue/cli-plugin-eslint from 3.10.0 to 3.11.0 (#4) * Bump @vue/cli-plugin-eslint from 3.10.0 to 3.11.0 Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 3.10.0 to 3.11.0. - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v3.11.0/packages/@vue/cli-plugin-eslint) Signed-off-by: dependabot-preview[bot] <[email protected]> * Update package * Add todobot * Fix todobot config * Boilerplating modal * Revert "Boilerplating modal" This reverts commit d86d2f5. * [Security] Bump eslint-utils from 1.4.0 to 1.4.2 (#27) * [Security] Bump eslint-utils from 1.4.0 to 1.4.2 Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.4.0 to 1.4.2. **This update includes a security fix.** - [Release notes](https://github.com/mysticatea/eslint-utils/releases) - [Commits](mysticatea/eslint-utils@v1.4.0...v1.4.2) Signed-off-by: dependabot-preview[bot] <[email protected]> * fix sass issue * Configure Restyled.io * Bump babel-eslint from 10.0.2 to 10.0.3 (#28) Bumps [babel-eslint](https://github.com/babel/babel-eslint) from 10.0.2 to 10.0.3. - [Release notes](https://github.com/babel/babel-eslint/releases) - [Commits](babel/babel-eslint@v10.0.2...v10.0.3) Signed-off-by: dependabot-preview[bot] <[email protected]> * Bump core-js from 2.6.9 to 3.1.4 (#29) Bumps [core-js](https://github.com/zloirock/core-js) from 2.6.9 to 3.1.4. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](zloirock/core-js@v2.6.9...3.1.4) Signed-off-by: dependabot-preview[bot] <[email protected]> * Enable epic creation (#25) * Ensure app and modal communicate * add modal background * Add modal title * Add editor config * add styling to modals * Update colour naming * Wrap up modal styline (for now) * Please linter gods * Refactor sass file structure * Toggle modal (on close) * Toggle modal (on open) * Save epic input in data * Add new epics to epic object * Please linter gods * sorting epics in computed properties * Use computed components to sort epics * Use computed properties to sort epics * Remove breaks in switch expression Since returns acts as a break, the break condition would not be accesible and this would cause errors in the linter. * Close modal on save * add a nice message on save * Apply PR comments * Add tooltip messages to toolbar (#32) * add tooltip messages to toolbar * Make sure to pay the linter gods * Update github todo bot for linter reasons * Feature/add ci (#38) * Add linter to ci * add lint job * add building step * Make lint into another job * Small fix * Handle settings (#40) * Fix missclick * boilerplate for settings * Simplify working with .yml files * Handle escape key on modal to close * Boilerplate setting form * Add a second column to display a profile picture * Create user object * Pass user preferences to pref pane * Please linter gods (who are always right) * Add final details before handling changes * enable closing settings modal and styling change * emit settings object on save * Save user settings * Removing useless style files * Add early version disclaimer * Bump package version * Make label clickable * Actually use the user's picture to display it * Use username to create epic * Updates based on PR comments * Update package.json * Update src/App.vue * Add PR template * Ensure chekboxes are rendered * Bump sass-loader from 7.3.1 to 8.0.0 (#48) Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 7.3.1 to 8.0.0. - [Release notes](https://github.com/webpack-contrib/sass-loader/releases) - [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md) - [Commits](webpack-contrib/sass-loader@v7.3.1...v8.0.0) Signed-off-by: dependabot-preview[bot] <[email protected]> * Enable epic edition (#46) * Bump version * Show selected epic * Add an ID to each epic and send it down * Upate app state * Reorganize modals * Go for it and send the whole epic * Review modal structure * Plan for epic detail restyle * display epic author * Style epic details modal * handle closing modal and DRY * Set resolved to true when creating done epic * Enable deleting epics (with a nice message) * Rename epic.name to epic.epicName * Letting the app know we update epic * Enable epic edition * Pimp epic id * Wrap up epic edition * Updates based on PR comments * Delete roadmap and error messages (#54) * Error message when user clicks a feature not done * Generalize error message * Display danger modal * Version bump * Respect linter gods. * Be really explicit about the risks of resetting * Delete roadmap. Don't look back. * Export roadmap (#56) * v0.5.0 * Improve on PR template * Export roadmap to JSON in a file * Fix merge conflict * Make file export happen in modal * Quick css fix (planning for png export) * Enable saving pictures * Trigger modal close * Be on our way on simplifying export * Keep simplifying * Relentlessly simplify * Respect linter gods (dammit) * Refactor modal title computing * Locally save a user's roadmap (#57) * v0.6.0 * Rename demoepic in user epic * Get local storage on creation * Get and retrieve local save * Fix date bug Since we store our epics as strings, our dates get converted to strings. This means they can't be read properly any longer. To fix it, we needed to revert the string to a date before working with it * Bring epic creation in app.js * Save user details * Quick fix * Enable deploying the app (#60) * Add deploy files * Quick fix * Add deployment script * Improve indentation on package * Serve is a dev dependancy * Please linter * v1.0.0 * Quick fix on max height lanes * Import user Roadmap (#59) * v0.7.0 * Boilerplate for CSV roadmap import * Add style and hints * Boilerplate interaction * Wait what? * Update babel config to support split Long story short: the issue was that the system (for lack of a better word) was looking for files that were prefixed with es6... whereas my core-js files were prefixed with es. Obviously, files would not be found. I updated my packages to make sure we were running the latest versions for everything and then, since this did not work, updated my babel config as proposed here: vuejs/vue-cli#3678. And now, after 3h, I can finally split a fucking string :) * Fix display issues in chrome (unrelated) * Verify import * Ensure epic validation works * And properly notify the user * Reset error message when input is emptied * Improve styling of error message * Refactor epic status validation and clean empty li * Add some documentation and informations * Bring epic creation in app (rather than in modal) * Batch create epics! * Ensuring linter gods are pleased. * Add manifest (#62) * v1.1.1 * Fix restyle to please .yaml (piece of crap) gods * Initialize manifest * Add pictures to manifest * [ImgBot] Optimize images (#65) * [ImgBot] Optimize images /src/assets/logo.png -- 6.69kb -> 5.73kb (14.4%) Signed-off-by: ImgBotApp <[email protected]> * [ImgBot] Optimize images *Total -- 26.31kb -> 22.98kb (12.65%) /public/android-chrome-192x192.png -- 5.89kb -> 5.00kb (15.07%) /public/android-chrome-512x512.png -- 20.42kb -> 17.98kb (11.95%) Signed-off-by: ImgBotApp <[email protected]> * v1.1.2 * Add vue cli to help CI * Feature/add segment (#67) * v1.2.0 * v1.2.1 * Load segment when user agrees * Add disclaimer about privacy and data collection * Fix a bug where the user was not saved * Boilerplate onboarding modal * Trigger onboarding modal * Remove uppercase everywhere but when needed * Design onboarding * v1.3.0 * Make sure that emoji has some room to breath * Restyle Update master (#69) * Restyled by prettier * Restyled by prettier * v1.2.3
1 parent 81cda59 commit cc7b889

29 files changed

+2898
-455
lines changed

.restyled.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ comments: true
1212

1313
# Set commit statuses on the original PR?
1414
statuses:
15-
# Red status in the case of differences found
16-
differences: true
17-
# Green status in the case of no differences found
18-
no_differences: true
19-
# Red status if we encounter errors restyling
20-
error: true
15+
# Red status in the case of differences found
16+
differences: true
17+
# Green status in the case of no differences found
18+
no_differences: true
19+
# Red status if we encounter errors restyling
20+
error: true
2121

2222
# Request review on the Restyle PR?
2323
request_review: author

babel.config.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
module.exports = {
2-
presets: [
3-
'@vue/app'
4-
]
5-
}
2+
presets: [
3+
[
4+
'@vue/app',
5+
{
6+
useBuiltIns: 'entry',
7+
},
8+
],
9+
],
10+
};

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "fuzz-roadmap",
3-
"version": "1.0.0",
4-
"description": "A roadmapping tool that lets you forget about timelines",
3+
"version": "1.2.3",
4+
"description": "A roadmapping tool that lets you forget about time estimate and focus on what matters",
55
"author": "Adrien D. Ahlqvist",
66
"bugs": "https://github.com/Armitage35/fuzzy-roadmap/issues",
77
"license": "MIT",
@@ -17,13 +17,14 @@
1717
"deploy": "bash src/deploy.sh"
1818
},
1919
"dependencies": {
20-
"core-js": "^3.1.4",
20+
"core-js": "^3.2.1",
2121
"html2canvas": "^1.0.0-rc.3",
2222
"izitoast": "^1.4.0",
2323
"tippy.js": "^4.3.5",
2424
"vue": "^2.6.10"
2525
},
2626
"devDependencies": {
27+
"@vue/cli": "^3.11.0",
2728
"@vue/cli-plugin-babel": "^3.10.0",
2829
"@vue/cli-plugin-eslint": "^3.11.0",
2930
"@vue/cli-service": "^3.11.0",

public/android-chrome-192x192.png

5 KB
Loading

public/android-chrome-512x512.png

18 KB
Loading

public/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
88
<title>Fuzz Roadmap</title>
99
<meta name="description" content="Lets you build a fuzzy time roadmap for your agile team">
10-
<script src="https://kit.fontawesome.com/797b746f81.js"></script>
10+
<script src="https://kit.fontawesome.com/797b746f81.js"></script>
11+
<link rel="manifest" href="<%= BASE_URL %>manifest.json">
1112
</head>
1213
<body>
1314
<noscript>
1415
<strong>We're sorry but Fuzz Roadmap doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
1516
</noscript>
1617
<div id="app"></div>
1718
<!-- built files will be auto injected -->
18-
<!-- @TODO: add a manifest -->
1919
</body>
2020
</html>

public/manifest.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"short_name": "Fuzzy Roadmap",
3+
"name": "Fuzzy Roadmap",
4+
"description": "A roadmapping tool that lets you forget about timelines",
5+
"version": "1.1.1",
6+
"author": "Adrien D. Ahlqvist",
7+
"developer": {
8+
"name": "Adrien D. Ahlqvist",
9+
"url": "https://armitageweb.net/"
10+
},
11+
"icons": [
12+
{
13+
"src": "/android-chrome-192x192.png",
14+
"sizes": "192x192",
15+
"type": "image/png"
16+
},
17+
{
18+
"src": "/android-chrome-512x512.png",
19+
"sizes": "512x512",
20+
"type": "image/png"
21+
}
22+
],
23+
"homepage_url": "fuzzyroadmap.com",
24+
"default_locale": "en",
25+
"lang": "en-CA",
26+
"manifest_version": 1,
27+
"orientation": "landscape",
28+
"browser_action": {
29+
"default_icon": "favicon.ico",
30+
"default_popup": "index.html"
31+
},
32+
"start_url": "./index.html",
33+
"display": "standalone",
34+
"theme_color": "#3A4768",
35+
"background_color": "#3A4768"
36+
}

src/App.scss

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
body {
22
font-family: $mainFonts;
3-
text-transform: uppercase;
43
}
54

65
h2 {
@@ -49,6 +48,16 @@ button {
4948
}
5049
}
5150

51+
textarea {
52+
border: $defaultBorder;
53+
resize: none;
54+
overflow: auto;
55+
width: 90%;
56+
font-family: $mainFonts;
57+
border-radius: 5px;
58+
padding: 12px;
59+
}
60+
5261
.app {
5362
display: flex;
5463
}
@@ -84,7 +93,3 @@ button {
8493
.bttn-danger:hover {
8594
background-color: $darkerRed
8695
}
87-
88-
.iziToast-body {
89-
text-transform: none;
90-
}

src/App.vue

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@createEpic="createEpic($event)"
1010
@deleteEpic="deleteEpic($event)"
1111
@deleteRoadmap="resetRoadmap"
12+
@importRoadmap="batchAddEpics($event)"
1213
@toggleModal="toggleModal($event)"
1314
@updateEpic="updateEpic($event)"
1415
@updateSettings="updateSettings($event)"
@@ -26,6 +27,7 @@
2627
<Toolbar
2728
@toggleModal="toggleModal($event)"
2829
@exportRoadmap="toggleModal($event)"
30+
@importRoadmap="toggleModal($event)"
2931
@openResetRoadmapModal="toggleModal($event)"></Toolbar>
3032
</div>
3133
</template>
@@ -50,20 +52,39 @@
5052
Lane, Toolbar, Modal
5153
},
5254
created: function() {
55+
// initialize roadmap
5356
if (localStorage.getItem('roadmap') === null) {
5457
this.userEpics = demoEpics.demoEpics;
5558
this.saveRoadmapInClient();
5659
} else {
5760
this.userEpics = JSON.parse(localStorage.getItem('roadmap'));
5861
}
5962
63+
// initialize user
6064
if (localStorage.getItem('user') === null) {
6165
this.userDetails = defaultUser.defaultUser;
62-
this.saveRoadmapInClient();
66+
this.saveUserInClient();
67+
this.toggleModal('onboarding');
6368
} else {
6469
this.userDetails = JSON.parse(localStorage.getItem('user'));
6570
}
6671
},
72+
mounted: function() {
73+
// segment tracking library
74+
if (this.userDetails.preferences.tracking) {
75+
// eslint-disable-next-line
76+
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
77+
analytics.load("1RIT6LUKH0GmiuFYdtpf1Yz5oz4mrsO5");
78+
analytics.page();
79+
}}();
80+
81+
// eslint-disable-next-line
82+
analytics.identify(this.userDetails.id, {
83+
name: this.userDetails.username,
84+
email: this.userDetails.email
85+
});
86+
}
87+
},
6788
data: function () {
6889
return {
6990
lanes: [
@@ -121,7 +142,7 @@
121142
this.userDetails.preferences.theme = event.theme;
122143
this.userDetails.preferences.tracking = event.tracking;
123144
124-
localStorage.setItem('user', JSON.stringify(this.userDetails));
145+
this.saveUserInClient();
125146
126147
iziToast.success({
127148
title: 'Settings updated',
@@ -174,7 +195,25 @@
174195
saveRoadmapInClient() {
175196
localStorage.setItem('roadmap', JSON.stringify(this.userEpics));
176197
},
177-
createEpic(newEpic) {
198+
saveUserInClient() {
199+
localStorage.setItem('user', JSON.stringify(this.userDetails));
200+
},
201+
createEpic(epicData) {
202+
let newEpic = {
203+
epicName: {
204+
displayName: epicData[0],
205+
fullName: epicData[0],
206+
},
207+
status: epicData[1],
208+
creationDate: new Date(),
209+
order: 1,
210+
resolution: {
211+
resolved: epicData[1] === 'done' ? true : false,
212+
resolutionDate: epicData[1] === 'done' ? new Date() : null,
213+
},
214+
author: this.userDetails.userName
215+
}
216+
178217
this.userEpics.unshift(newEpic);
179218
this.toggleModal();
180219
@@ -185,7 +224,11 @@
185224
message: 'You are getting the hang of this',
186225
position: "topRight"
187226
});
188-
227+
},
228+
batchAddEpics (batch) {
229+
for (let i = 0; i < batch.length; i++) {
230+
this.createEpic(batch[i]);
231+
}
189232
}
190233
},
191234
computed: {

src/assets/logo.png

5.73 KB
Loading

src/components/Lane/Lane.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// @TODO: use flexbox properly rather than hacking your way in
22
.lane {
33
width: 22vw;
4-
height: 80vh;
54
display: inline-block;
65
}
76

src/components/Modal/CreateEpicModal/CreateEpicModal.vue

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
</div>
2626
</div>
2727
<div class="modal-actions">
28-
<button type="button" class="bttn-secondary" @click="closeModal">Cancel changes</button>
29-
<button type="button" class="bttn-primary" @click="saveEpic">Save</button>
28+
<button type="button" class="bttn-secondary" @click="$emit('toggleModal', '');">Cancel changes</button>
29+
<button type="button" class="bttn-primary" @click="$emit('createEpic', [epicName, epicStatus])">Save</button>
3030
</div>
3131
</div>
3232
</template>
@@ -39,30 +39,6 @@
3939
epicName: "",
4040
epicStatus: "inProgress"
4141
}
42-
},
43-
methods: {
44-
closeModal() {
45-
this.$emit('toggleModal', "");
46-
},
47-
saveEpic() {
48-
let newEpic = {
49-
epicName: {
50-
displayName: this.epicName,
51-
fullName: this.epicName,
52-
},
53-
status: this.epicStatus,
54-
creationDate: new Date(),
55-
order: 1,
56-
resolution: {
57-
resolved: this.epicStatus === 'done' ? true : false,
58-
resolutionDate: this.epicStatus === 'done' ? new Date() : null,
59-
},
60-
author: this.author
61-
}
62-
63-
this.$emit('createEpic', newEpic);
64-
65-
}
6642
}
6743
}
6844
</script>

src/components/Modal/ExportRoadmapModal/ExportRoadmapModal.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,3 @@
33
margin-left: 0;
44
}
55
}
6-
7-
.modal-export-description {
8-
text-transform: none;
9-
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.modal-import-hint {
2+
font-style: italic;
3+
color: $lightGrey;
4+
font-size: 14px;
5+
margin: 12px 0;
6+
width: 90%;
7+
}
8+
9+
.modal-import-error {
10+
color: $red;
11+
font-weight: bold;
12+
}

0 commit comments

Comments
 (0)