issue-pane 2.4.20 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +19 -0
- package/.github/workflows/ci.yml +75 -0
- package/.nvmrc +1 -0
- package/Makefile +3 -1
- package/csvButton.js +137 -0
- package/dev/context.js +19 -0
- package/dev/index.html +47 -0
- package/dev/index.js +42 -0
- package/dist/big-tracker.ttl +238 -0
- package/dist/ecosystem-roadmap.ttl +78 -0
- package/dist/state.n3 +67 -0
- package/issuePane.js +3 -1
- package/package.json +10 -4
- package/test/big-tracker.ttl +238 -0
- package/test/ecosystem-roadmap.ttl +78 -0
- package/webpack.dev.config.js +36 -0
package/.eslintrc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"env": {
|
|
4
|
+
"browser": true,
|
|
5
|
+
"es6": true,
|
|
6
|
+
"node": true
|
|
7
|
+
},
|
|
8
|
+
"globals": {
|
|
9
|
+
"Atomics": "readonly",
|
|
10
|
+
"SharedArrayBuffer": "readonly"
|
|
11
|
+
},
|
|
12
|
+
"rules": {
|
|
13
|
+
"no-unused-vars": ["warn", {
|
|
14
|
+
"argsIgnorePattern": "^_",
|
|
15
|
+
"varsIgnorePattern": "^_"
|
|
16
|
+
}]
|
|
17
|
+
},
|
|
18
|
+
"extends": ["eslint:recommended", "plugin:import/recommended"]
|
|
19
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "**"
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- "**"
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
node-version:
|
|
18
|
+
- 18.x
|
|
19
|
+
- 20.x
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v2
|
|
22
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
23
|
+
uses: actions/setup-node@v1
|
|
24
|
+
with:
|
|
25
|
+
node-version: ${{ matrix.node-version }}
|
|
26
|
+
- run: npm ci
|
|
27
|
+
- run: npm run lint --if-present
|
|
28
|
+
- run: npm test
|
|
29
|
+
- run: npm run build --if-present
|
|
30
|
+
- name: Save build
|
|
31
|
+
if: matrix.node-version == '18.x'
|
|
32
|
+
uses: actions/upload-artifact@v4
|
|
33
|
+
with:
|
|
34
|
+
name: build
|
|
35
|
+
path: |
|
|
36
|
+
.
|
|
37
|
+
!node_modules
|
|
38
|
+
retention-days: 1
|
|
39
|
+
npm-publish-build:
|
|
40
|
+
needs: build
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/download-artifact@v4
|
|
44
|
+
with:
|
|
45
|
+
name: build
|
|
46
|
+
- uses: actions/setup-node@v1
|
|
47
|
+
with:
|
|
48
|
+
node-version: 18.x
|
|
49
|
+
- uses: rlespinasse/github-slug-action@v3.x
|
|
50
|
+
- name: Append commit hash to package version
|
|
51
|
+
run: 'sed -i -E "s/(\"version\": *\"[^\"]+)/\1-${GITHUB_SHA_SHORT}/" package.json'
|
|
52
|
+
- name: Disable pre- and post-publish actions
|
|
53
|
+
run: 'sed -i -E "s/\"((pre|post)publish)/\"ignore:\1/" package.json'
|
|
54
|
+
- uses: JS-DevTools/npm-publish@v1
|
|
55
|
+
with:
|
|
56
|
+
token: ${{ secrets.NPM_TOKEN }}
|
|
57
|
+
tag: ${{ env.GITHUB_REF_SLUG }}
|
|
58
|
+
|
|
59
|
+
npm-publish-latest:
|
|
60
|
+
needs: build
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
if: github.ref == 'refs/heads/main'
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/download-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: build
|
|
67
|
+
- uses: actions/setup-node@v1
|
|
68
|
+
with:
|
|
69
|
+
node-version: 18.x
|
|
70
|
+
- name: Disable pre- and post-publish actions
|
|
71
|
+
run: 'sed -i -E "s/\"((pre|post)publish)/\"ignore:\1/" package.json'
|
|
72
|
+
- uses: JS-DevTools/npm-publish@v1
|
|
73
|
+
with:
|
|
74
|
+
token: ${{ secrets.NPM_TOKEN }}
|
|
75
|
+
tag: latest
|
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v18.19.0
|
package/Makefile
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Wrap TTL files into JS files for bundling with library
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# unused: trackerInstancesForm.js
|
|
4
|
+
|
|
5
|
+
,all : wf.js trackerSettingsForm.js ui.js
|
|
4
6
|
|
|
5
7
|
#individualForm.js : individualForm.ttl
|
|
6
8
|
# (echo 'module.exports = `' ; cat individualForm.ttl; echo '`') > individualForm.js
|
package/csvButton.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// A Button to copy the state of the tracker in CSV format
|
|
2
|
+
// Comma-separated Values
|
|
3
|
+
//
|
|
4
|
+
// Yes this mixes the layers but that is not all bad if it gets it in one file
|
|
5
|
+
// one can look at
|
|
6
|
+
|
|
7
|
+
import { icons, ns, utils, widgets } from 'solid-ui'
|
|
8
|
+
import { store } from 'solid-logic'
|
|
9
|
+
|
|
10
|
+
const TestCSVstring = 'A,B,C\n1,2,3\n4,5,6\nfoo,bar,baz\n'
|
|
11
|
+
|
|
12
|
+
export function quoteString(value) {
|
|
13
|
+
// https://www.rfc-editor.org/rfc/rfc4180
|
|
14
|
+
const stripped = value.replaceAll('\n', ' ')
|
|
15
|
+
if (!stripped.includes(',')) {
|
|
16
|
+
return stripped
|
|
17
|
+
} // If contains comma then put in quotes and double up internal quotes
|
|
18
|
+
const quoted = '"' + stripped.replaceAll('"', '""') + '"'
|
|
19
|
+
console.log('Quoted: >>>' + quoted + '<<<')
|
|
20
|
+
const check = quoted.slice(1,-1).replaceAll('""', '')
|
|
21
|
+
if (check.includes('"')) throw new Error('CSV inconsistecy')
|
|
22
|
+
return quoted
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function csvText(store, tracker) {
|
|
26
|
+
|
|
27
|
+
function columnText(task, column) {
|
|
28
|
+
let thing
|
|
29
|
+
if (column.predicate) {
|
|
30
|
+
thing = store.any(task, column.predicate)
|
|
31
|
+
return thing? thing.value : '--'
|
|
32
|
+
}
|
|
33
|
+
else if (column.category) {
|
|
34
|
+
const types = store.each(task, ns.rdf('type'))
|
|
35
|
+
for (const t of types) {
|
|
36
|
+
// console.log('@@ checking subclass type: ', t, ' category: ', column.category )
|
|
37
|
+
if (store.holds(t, ns.rdfs('subClassOf'), column.category)){
|
|
38
|
+
thing = t
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!thing) return '?' + utils.label(column.category) // Missing cat OK
|
|
42
|
+
// if (!thing) throw new Error('wot no class of category ', column.category)
|
|
43
|
+
} else {
|
|
44
|
+
throw new Error('wot no pred or cat', column)
|
|
45
|
+
}
|
|
46
|
+
return utils.label(thing)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function taskLine(task) {
|
|
50
|
+
return columns.map(column => columnText(task, column))
|
|
51
|
+
.map(quoteString)
|
|
52
|
+
.join(',')
|
|
53
|
+
+ '\n'
|
|
54
|
+
}
|
|
55
|
+
const stateStore = store.any(tracker, ns.wf('stateStore'))
|
|
56
|
+
const tasks = store.each(null, ns.wf('tracker'), tracker, stateStore)
|
|
57
|
+
console.log(' CSV: Tasks:', tasks.length)
|
|
58
|
+
|
|
59
|
+
const columns = [
|
|
60
|
+
|
|
61
|
+
{ label: 'Name', predicate: ns.dc('title') },
|
|
62
|
+
/* { label: 'Description', predicate: ns.wf('description') }, */
|
|
63
|
+
|
|
64
|
+
/* { label: 'State', category: ns.wf('Task') }
|
|
65
|
+
*/
|
|
66
|
+
]
|
|
67
|
+
const states = store.any(tracker, ns.wf('issueClass')) // Main states are subclasses of this class
|
|
68
|
+
console.log(' CSV: States - main superclass:', states)
|
|
69
|
+
const stateColumn = { label: 'State', category: states} // better than 'task'
|
|
70
|
+
console.log(' CSV: found column from state', stateColumn)
|
|
71
|
+
columns.push(stateColumn)
|
|
72
|
+
|
|
73
|
+
const categories = store.each(tracker, ns.wf('issueCategory'))
|
|
74
|
+
console.log(' CSV: Categories : ', categories )
|
|
75
|
+
console.log(' CSV: Categories : length: ', categories.length)
|
|
76
|
+
console.log(' CSV: Categories : first: ', categories[0])
|
|
77
|
+
|
|
78
|
+
const classifications = categories
|
|
79
|
+
for (const c of classifications){
|
|
80
|
+
const column = { label: utils.label(c), category: c}
|
|
81
|
+
console.log(' CSV: found column from classifications', column)
|
|
82
|
+
columns.push(column) // Classes are different
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// const propertyList = ns.wf('propertyList')
|
|
86
|
+
const form = store.any(tracker, ns.wf('extrasEntryForm'), null, null)
|
|
87
|
+
console.log(' CSV: Form : ', form )
|
|
88
|
+
|
|
89
|
+
if (form) {
|
|
90
|
+
const parts = store.any(form, ns.ui('parts'), null, form.doc())
|
|
91
|
+
console.log(' CSV: parts : ', parts )
|
|
92
|
+
|
|
93
|
+
const fields = parts.elements
|
|
94
|
+
console.log(' CSV: fields : ', fields )
|
|
95
|
+
|
|
96
|
+
for (const field of fields) {
|
|
97
|
+
const prop = store.any(field,ns.ui('property'))
|
|
98
|
+
if (prop) {
|
|
99
|
+
const lab = utils.label(prop)
|
|
100
|
+
const column = {label: lab, predicate: prop}
|
|
101
|
+
console.log(' CSV: found column from form', column)
|
|
102
|
+
columns.push(column)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Put description on the end as it can be long
|
|
107
|
+
columns.push({ label: 'Description', predicate: ns.wf('description') })
|
|
108
|
+
console.log('Columns: ', columns.length)
|
|
109
|
+
const header = columns.map(col => col.label).join(',') + '\n'
|
|
110
|
+
console.log('CSV: Header= ', header)
|
|
111
|
+
// Order tasks?? By Creation date? By Status?
|
|
112
|
+
const body = tasks.map(taskLine).join('')
|
|
113
|
+
return header + body
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function csvButton (dom, tracker) {
|
|
117
|
+
const wrapper = dom.createElement('div')
|
|
118
|
+
// Add a button
|
|
119
|
+
const button = widgets.button(dom, icons.iconBase + 'noun_Document_998605.svg',
|
|
120
|
+
'Copy as CSV', async event => {
|
|
121
|
+
|
|
122
|
+
const div = button.parentNode.parentNode
|
|
123
|
+
console.log('button gparent div', div)
|
|
124
|
+
div.addEventListener('copy', event => {
|
|
125
|
+
// alert ('Copy caught');
|
|
126
|
+
const csv = csvText(store, tracker);
|
|
127
|
+
event.clipboardData.setData("text/plain", csv);
|
|
128
|
+
event.clipboardData.setData("text/csv", csv);
|
|
129
|
+
alert ('Copy data: ' + csv)
|
|
130
|
+
event.preventDefault();
|
|
131
|
+
})
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
wrapper.appendChild(button)
|
|
135
|
+
return wrapper
|
|
136
|
+
}
|
|
137
|
+
|
package/dev/context.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// import { longChatPane } from "chat-pane";
|
|
2
|
+
import { DataBrowserContext, PaneRegistry } from "pane-registry";
|
|
3
|
+
import { LiveStore, solidLogicSingleton, store } from "solid-logic";
|
|
4
|
+
|
|
5
|
+
export const context = {
|
|
6
|
+
session: {
|
|
7
|
+
store: store,
|
|
8
|
+
paneRegistry: {
|
|
9
|
+
byName: (name) => {
|
|
10
|
+
return // longChatPane
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
logic : solidLogicSingleton
|
|
14
|
+
},
|
|
15
|
+
dom: document,
|
|
16
|
+
getOutliner: () => null,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const fetcher = store.fetcher;
|
package/dev/index.html
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<title>issue-pane dev server</title>
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
margin: 0;
|
|
9
|
+
font-family: sans-serif;
|
|
10
|
+
}
|
|
11
|
+
h1 {
|
|
12
|
+
padding: 0.5rem;
|
|
13
|
+
margin: 0;
|
|
14
|
+
color: #666;
|
|
15
|
+
}
|
|
16
|
+
#loginBanner {
|
|
17
|
+
display: grid;
|
|
18
|
+
padding: 0.5rem;
|
|
19
|
+
grid-gap: 1rem;
|
|
20
|
+
grid-auto-flow: column;
|
|
21
|
+
justify-content: flex-start;
|
|
22
|
+
align-items: center;
|
|
23
|
+
}
|
|
24
|
+
.banner {
|
|
25
|
+
margin: 0;
|
|
26
|
+
height: 1rem;
|
|
27
|
+
width: 100%;
|
|
28
|
+
background: repeating-linear-gradient(
|
|
29
|
+
-45deg,
|
|
30
|
+
#ffffff,
|
|
31
|
+
#d8d9d5 20px,
|
|
32
|
+
#d41717 20px,
|
|
33
|
+
#984646 40px
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
37
|
+
</head>
|
|
38
|
+
<body>
|
|
39
|
+
<h1>pane under development</h1>
|
|
40
|
+
<div>
|
|
41
|
+
<div id="webId"></div>
|
|
42
|
+
</div>
|
|
43
|
+
<div id="loginBanner"></div>
|
|
44
|
+
<div class="banner"></div>
|
|
45
|
+
<div id="app">Rendering...</div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
package/dev/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { sym } from "rdflib";
|
|
2
|
+
import { default as pane } from "..";
|
|
3
|
+
import { context, fetcher } from "./context";
|
|
4
|
+
import { authn, authSession } from "solid-logic";
|
|
5
|
+
import * as UI from "solid-ui";
|
|
6
|
+
|
|
7
|
+
const loginBanner = document.getElementById("loginBanner");
|
|
8
|
+
const webId = document.getElementById("webId");
|
|
9
|
+
|
|
10
|
+
loginBanner.appendChild(UI.login.loginStatusBox(document, null, {}));
|
|
11
|
+
|
|
12
|
+
async function finishLogin() {
|
|
13
|
+
await authSession.handleIncomingRedirect();
|
|
14
|
+
const session = authSession;
|
|
15
|
+
if (session.info.isLoggedIn) {
|
|
16
|
+
// Update the page with the status.
|
|
17
|
+
webId.innerHTML = "Logged in as: " + authn.currentUser().uri;
|
|
18
|
+
} else {
|
|
19
|
+
webId.innerHTML = "";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
finishLogin();
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// https://testingsolidos.solidcommunity.net/profile/card#me
|
|
27
|
+
// https://timbl.solidcommunity.net/profile/card#me
|
|
28
|
+
//
|
|
29
|
+
// const targetURIToShow = "https://angelo.veltens.org/profile/card#me";
|
|
30
|
+
// const targetURIToShow = "https://testingsolidos.solidcommunity.net/profile/card#me";
|
|
31
|
+
// const targetURIToShow = "https://timbl.solidcommunity.net/profile/card#me";
|
|
32
|
+
|
|
33
|
+
// const targetURIToShow = "https://solidproject.solidcommunity.net/Roadmap/index.ttl#this";
|
|
34
|
+
|
|
35
|
+
// const targetURIToShow = "https://timbl.com/timbl/Automation/mother/tracker.n3#mother"
|
|
36
|
+
|
|
37
|
+
const targetURIToShow = "http://localhost:8080/big-tracker.ttl#this"
|
|
38
|
+
|
|
39
|
+
fetcher.load(targetURIToShow).then(() => {
|
|
40
|
+
const app = pane.render(sym(targetURIToShow), context);
|
|
41
|
+
document.getElementById("app").replaceWith(app);
|
|
42
|
+
});
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
|
|
2
|
+
# This is the master file for a big issue tracker
|
|
3
|
+
|
|
4
|
+
@prefix : <#> .
|
|
5
|
+
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
|
|
6
|
+
@prefix doap: <http://usefulinc.com/ns/doap#> .
|
|
7
|
+
@prefix flow: <http://www.w3.org/2005/01/wf/flow#> .
|
|
8
|
+
@prefix ical: <http://www.w3.org/2002/12/cal/ical#> .
|
|
9
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
10
|
+
@prefix ui: <http://www.w3.org/ns/ui#> .
|
|
11
|
+
|
|
12
|
+
:Accepted a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
13
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Will go ahead. We are working on this";
|
|
14
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Accepted, in progress";
|
|
15
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
16
|
+
:MotherIssue;
|
|
17
|
+
ui:sortOrder 50 .
|
|
18
|
+
|
|
19
|
+
:Action a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
20
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "action";
|
|
21
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
22
|
+
ui:backgroundColor "#eeeeff";
|
|
23
|
+
ui:sortOrder 80 .
|
|
24
|
+
|
|
25
|
+
:AttendConference a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
26
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "attend conference";
|
|
27
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
28
|
+
ui:backgroundColor "#fcfce8";
|
|
29
|
+
ui:sortOrder 50 .
|
|
30
|
+
|
|
31
|
+
:Book a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
32
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "book";
|
|
33
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
34
|
+
ui:backgroundColor "#eeffee";
|
|
35
|
+
ui:sortOrder 70 .
|
|
36
|
+
|
|
37
|
+
:CommercialSpeaking a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
38
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "commercial speaking";
|
|
39
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
40
|
+
ui:backgroundColor "#ffcbad";
|
|
41
|
+
ui:sortOrder 30 .
|
|
42
|
+
|
|
43
|
+
:Declined a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
44
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Declined";
|
|
45
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "declined";
|
|
46
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
47
|
+
:MotherIssue;
|
|
48
|
+
ui:sortOrder 30 .
|
|
49
|
+
|
|
50
|
+
:Discussing a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
51
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Being discussed";
|
|
52
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "in discussion";
|
|
53
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
54
|
+
:MotherIssue;
|
|
55
|
+
ui:sortOrder 80 .
|
|
56
|
+
|
|
57
|
+
:Done a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
58
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Completed.";
|
|
59
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "done";
|
|
60
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
61
|
+
:MotherIssue;
|
|
62
|
+
ui:sortOrder 20 .
|
|
63
|
+
|
|
64
|
+
:Film a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
65
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "film";
|
|
66
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
67
|
+
ui:backgroundColor "#eeffff";
|
|
68
|
+
ui:sortOrder 80 .
|
|
69
|
+
|
|
70
|
+
:HonoraryDegree a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
71
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "honorary degree";
|
|
72
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
73
|
+
ui:backgroundColor "#ffa8ab";
|
|
74
|
+
ui:sortOrder 40 .
|
|
75
|
+
|
|
76
|
+
:Meeting a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
77
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "meeting request";
|
|
78
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
79
|
+
ui:backgroundColor "#e8e8ff";
|
|
80
|
+
ui:sortOrder 60 .
|
|
81
|
+
|
|
82
|
+
:MotherIssue a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
83
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Request";
|
|
84
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Task;
|
|
85
|
+
owl:disjointUnionOf (
|
|
86
|
+
:New
|
|
87
|
+
:Discussing
|
|
88
|
+
:Pending
|
|
89
|
+
:Negotiating
|
|
90
|
+
:Accepted
|
|
91
|
+
:Urgent
|
|
92
|
+
:ToBeDeclined
|
|
93
|
+
:Watchlist
|
|
94
|
+
:Declined
|
|
95
|
+
:Obsolete
|
|
96
|
+
:Done ) .
|
|
97
|
+
|
|
98
|
+
:Negotiating a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
99
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Being negotiated";
|
|
100
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "negotiating";
|
|
101
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
102
|
+
:MotherIssue;
|
|
103
|
+
ui:sortOrder 60 .
|
|
104
|
+
|
|
105
|
+
:New a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
106
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> """Has not been looked at.
|
|
107
|
+
This is the initial state normally when an issue is created.""";
|
|
108
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "new";
|
|
109
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
110
|
+
:MotherIssue;
|
|
111
|
+
ui:sortOrder 90 .
|
|
112
|
+
|
|
113
|
+
:NonProfitSpeaking a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
114
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "non-profit speaking";
|
|
115
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
116
|
+
ui:backgroundColor "#fffed0";
|
|
117
|
+
ui:sortOrder 20 .
|
|
118
|
+
|
|
119
|
+
:Obsolete a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
120
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Overtaken by time or events.";
|
|
121
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "obsolete/missed";
|
|
122
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
123
|
+
:MotherIssue;
|
|
124
|
+
ui:sortOrder 10 .
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
:OtherRequest a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
128
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "other";
|
|
129
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
130
|
+
ui:backgroundColor "#eeeeee";
|
|
131
|
+
ui:sortOrder 90 .
|
|
132
|
+
|
|
133
|
+
:Pending a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
134
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Waiting for someone else's input.";
|
|
135
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "pending others";
|
|
136
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
137
|
+
:MotherIssue;
|
|
138
|
+
ui:sortOrder 75 .
|
|
139
|
+
|
|
140
|
+
:PressRequest a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
141
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "press";
|
|
142
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
143
|
+
ui:backgroundColor "#dccdfc";
|
|
144
|
+
ui:sortOrder 10 .
|
|
145
|
+
|
|
146
|
+
:RequestCategory <http://www.w3.org/2000/01/rdf-schema#label> "category";
|
|
147
|
+
owl:disjointUnionOf (
|
|
148
|
+
:PressRequest
|
|
149
|
+
:NonProfitSpeaking
|
|
150
|
+
:CommercialSpeaking
|
|
151
|
+
:HonoraryDegree
|
|
152
|
+
:AttendConference
|
|
153
|
+
:Meeting
|
|
154
|
+
:Book
|
|
155
|
+
:Film
|
|
156
|
+
:Action
|
|
157
|
+
:OtherRequest ) .
|
|
158
|
+
|
|
159
|
+
:RequestExtrasForm a ui:Form,
|
|
160
|
+
ui:Group;
|
|
161
|
+
<http://purl.org/dc/elements/1.1/title> "Extra details of a request";
|
|
162
|
+
ui:parts (
|
|
163
|
+
[
|
|
164
|
+
a ui:Heading;
|
|
165
|
+
ui:contents "Details:"@en;
|
|
166
|
+
ui:sequence 10 ]
|
|
167
|
+
[
|
|
168
|
+
a ui:DateField;
|
|
169
|
+
ui:property flow:earliestDate;
|
|
170
|
+
ui:sequence 20 ]
|
|
171
|
+
[
|
|
172
|
+
a ui:DateField;
|
|
173
|
+
ui:property flow:latestDate;
|
|
174
|
+
ui:sequence 40 ]
|
|
175
|
+
[
|
|
176
|
+
a ui:Comment;
|
|
177
|
+
ui:contents "The earliest and latest dates are the window for the event, or both the same if fixed."@en;
|
|
178
|
+
ui:sequence 60;
|
|
179
|
+
ui:style "background-color: #ffe;" ]
|
|
180
|
+
[
|
|
181
|
+
a ui:SingleLineTextField;
|
|
182
|
+
ui:property ical:location;
|
|
183
|
+
ui:seuqence 70;
|
|
184
|
+
ui:size 30 ]
|
|
185
|
+
[
|
|
186
|
+
a ui:DateField;
|
|
187
|
+
ui:property flow:dateReceived;
|
|
188
|
+
ui:sequence 80 ]
|
|
189
|
+
[
|
|
190
|
+
a ui:MultiLineTextField;
|
|
191
|
+
ui:property <http://www.w3.org/2000/01/rdf-schema#comment>;
|
|
192
|
+
ui:sequence 90 ] ) .
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
:ToBeDeclined a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
196
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "To be declined";
|
|
197
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "to be declined";
|
|
198
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
199
|
+
:MotherIssue;
|
|
200
|
+
ui:sortOrder 40 .
|
|
201
|
+
|
|
202
|
+
:Urgent a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
203
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Needs urgent attention";
|
|
204
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "URGENT";
|
|
205
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
206
|
+
:MotherIssue;
|
|
207
|
+
ui:sortOrder 55 .
|
|
208
|
+
|
|
209
|
+
:Watchlist a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
210
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "We will keep this in mind.";
|
|
211
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "watch list";
|
|
212
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
213
|
+
:MotherIssue;
|
|
214
|
+
ui:sortOrder 35 .
|
|
215
|
+
|
|
216
|
+
:this a flow:Tracker;
|
|
217
|
+
<http://purl.org/dc/terms/title> "The Big Request Tracker";
|
|
218
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Request Tracker";
|
|
219
|
+
flow:allowSubIssues :false;
|
|
220
|
+
flow:assigneeClass <http://xmlns.com/foaf/0.1/Person>;
|
|
221
|
+
flow:defaultView flow:TableView;
|
|
222
|
+
flow:description "Requests";
|
|
223
|
+
flow:extrasEntryForm :RequestExtrasForm;
|
|
224
|
+
flow:initialState :New;
|
|
225
|
+
flow:issueCategory :RequestCategory;
|
|
226
|
+
flow:issueClass :MotherIssue;
|
|
227
|
+
flow:propertyList (
|
|
228
|
+
flow:earliestDate
|
|
229
|
+
flow:latestDate
|
|
230
|
+
ical:location
|
|
231
|
+
<http://www.w3.org/2000/01/rdf-schema#comment>
|
|
232
|
+
flow:assignee );
|
|
233
|
+
flow:stateStore <state.n3> .
|
|
234
|
+
|
|
235
|
+
<tracker.n3> <http://www.w3.org/2000/01/rdf-schema#comment> """This file defines a tracker for requests.
|
|
236
|
+
""";
|
|
237
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "A tracker definition file for requests" .
|
|
238
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
@prefix : <#>.
|
|
2
|
+
@prefix dc: <http://purl.org/dc/elements/1.1/>.
|
|
3
|
+
@prefix dct: <http://purl.org/dc/terms/>.
|
|
4
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
|
5
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#>.
|
|
6
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
|
|
7
|
+
@prefix ui: <http://www.w3.org/ns/ui#>.
|
|
8
|
+
@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.
|
|
9
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
|
|
10
|
+
@prefix c: </profile/card#>.
|
|
11
|
+
|
|
12
|
+
:Classification
|
|
13
|
+
rdfs:label "Category";
|
|
14
|
+
owl:disjointUnionOf
|
|
15
|
+
( :Specification :Tests :Servers :Clients :DeveloperTools :Vertical ).
|
|
16
|
+
:Clients
|
|
17
|
+
rdfs:comment "Client side frameworks, SDKs and operating systems";
|
|
18
|
+
rdfs:label "Clients";
|
|
19
|
+
rdfs:subClassOf :Classification.
|
|
20
|
+
:DeveloperTools rdfs:label "Developer tools"; rdfs:subClassOf :Classification.
|
|
21
|
+
|
|
22
|
+
:InProgress
|
|
23
|
+
rdfs:label "In progress";
|
|
24
|
+
rdfs:subClassOf wf:Open, :States;
|
|
25
|
+
ui:backgroundColor "#f9ee71"^^xsd:color.
|
|
26
|
+
:NextSession
|
|
27
|
+
rdfs:label "To be done this month";
|
|
28
|
+
rdfs:subClassOf wf:Open, :States;
|
|
29
|
+
ui:backgroundColor "#91fdb9"^^xsd:color.
|
|
30
|
+
:Released
|
|
31
|
+
rdfs:label "Released";
|
|
32
|
+
rdfs:subClassOf wf:Open, :States;
|
|
33
|
+
ui:backgroundColor "#e2a7fb"^^xsd:color.
|
|
34
|
+
:Research
|
|
35
|
+
rdfs:label "Research";
|
|
36
|
+
rdfs:subClassOf wf:Open, :States;
|
|
37
|
+
ui:backgroundColor "#ffffff"^^xsd:color.
|
|
38
|
+
:Servers
|
|
39
|
+
rdfs:label "Solid Server implementations"; rdfs:subClassOf :Classification.
|
|
40
|
+
:Someday
|
|
41
|
+
rdfs:label "Someday pile";
|
|
42
|
+
rdfs:subClassOf wf:Open, :States;
|
|
43
|
+
ui:backgroundColor "#e3e3e3"^^xsd:color.
|
|
44
|
+
:Specification
|
|
45
|
+
rdfs:label "Parts of the Solid specification"; rdfs:subClassOf :Classification.
|
|
46
|
+
:States
|
|
47
|
+
rdfs:label "Task";
|
|
48
|
+
owl:disjointUnionOf
|
|
49
|
+
( :Research :Someday :ToBeDone :NextSession :InProgress :Works :Released ).
|
|
50
|
+
:Tests rdfs:label "Test suites"; rdfs:subClassOf :Classification.
|
|
51
|
+
|
|
52
|
+
:this
|
|
53
|
+
a wf:Tracker;
|
|
54
|
+
dc:author c:me;
|
|
55
|
+
dc:created "2020-07-21T14:00:20Z"^^xsd:dateTime;
|
|
56
|
+
dct:title "Solid Ecosystem: Roadmap";
|
|
57
|
+
wf:assigneeClass foaf:Person;
|
|
58
|
+
wf:defaultView :Classification;
|
|
59
|
+
wf:description
|
|
60
|
+
"""A roadmap for the whole Solid ecosystem.
|
|
61
|
+
See also other linked roadmaps for parts of the ecosystem like the SolidOS, Spec, open source projects, etc.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
""";
|
|
65
|
+
wf:initialState :Someday;
|
|
66
|
+
wf:issueCategory :Classification;
|
|
67
|
+
wf:issueClass :States;
|
|
68
|
+
wf:stateStore <state.ttl>.
|
|
69
|
+
:ToBeDone
|
|
70
|
+
rdfs:label "To Be Done";
|
|
71
|
+
rdfs:subClassOf wf:Open, :States;
|
|
72
|
+
ui:backgroundColor "#e0ffeb"^^xsd:color.
|
|
73
|
+
:Vertical rdfs:label "Apps and Verticals"; rdfs:subClassOf :Classification.
|
|
74
|
+
|
|
75
|
+
:Works
|
|
76
|
+
rdfs:label "Code runs";
|
|
77
|
+
rdfs:subClassOf wf:Open, :States;
|
|
78
|
+
ui:backgroundColor "#dcdbff"^^xsd:color.
|
package/dist/state.n3
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
@prefix dc: <http://purl.org/dc/terms/> .
|
|
4
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
5
|
+
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
|
|
6
|
+
@prefix dc: <http://purl.org/dc/elements/1.1/>.
|
|
7
|
+
@prefix doap: <http://usefulinc.com/ns/doap#> .
|
|
8
|
+
@prefix wf: <http://www.w3.org/2005/01/wf/flow#> .
|
|
9
|
+
@prefix ical: <http://www.w3.org/2002/12/cal/ical#> .
|
|
10
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
11
|
+
@prefix ui: <http://www.w3.org/ns/ui#> .
|
|
12
|
+
@prefix dct: <http://purl.org/dc/terms/> .
|
|
13
|
+
|
|
14
|
+
@prefix : <big-tracker.ttl#> . # the config file
|
|
15
|
+
|
|
16
|
+
<#Task1> wf:tracker :this ;
|
|
17
|
+
dc:title "Test task 1";
|
|
18
|
+
a :New , :Action;
|
|
19
|
+
dct:created 2004-08-21;
|
|
20
|
+
ical:location "London";
|
|
21
|
+
wf:dateReceived 2000-01-12;
|
|
22
|
+
wf:earliestDate 1999-12-12;
|
|
23
|
+
wf:latestDate 2001-12-12;
|
|
24
|
+
|
|
25
|
+
wf:description "Yadda Tadda yadda ";
|
|
26
|
+
rdfs:comment "This is a comment".
|
|
27
|
+
|
|
28
|
+
<#Task2> wf:tracker :this ;
|
|
29
|
+
dc:title "Test task 2";
|
|
30
|
+
a :Accepted , :Action;
|
|
31
|
+
dct:created 2004-06-21;
|
|
32
|
+
ical:location "London";
|
|
33
|
+
wf:dateReceived 2000-01-12;
|
|
34
|
+
wf:earliestDate 1999-12-12;
|
|
35
|
+
wf:latestDate 2001-12-12;
|
|
36
|
+
|
|
37
|
+
wf:description "Yadda Tadda yadda ";
|
|
38
|
+
rdfs:comment "This is a comment".
|
|
39
|
+
|
|
40
|
+
<#Task3> wf:tracker :this ;
|
|
41
|
+
dc:title "Test task 3";
|
|
42
|
+
a :New , :Book;
|
|
43
|
+
dct:created 2004-04-21;
|
|
44
|
+
ical:location "London";
|
|
45
|
+
wf:dateReceived 2000-01-12;
|
|
46
|
+
wf:earliestDate 1999-12-12;
|
|
47
|
+
wf:latestDate 2001-12-12;
|
|
48
|
+
|
|
49
|
+
wf:description "Yadda Tadda yadda ";
|
|
50
|
+
rdfs:comment "This is a comment".
|
|
51
|
+
|
|
52
|
+
<#Task4> wf:tracker :this ;
|
|
53
|
+
dc:title "Test task 4";
|
|
54
|
+
a :Accepted , :Book;
|
|
55
|
+
dct:created 2004-09-21;
|
|
56
|
+
ical:location "London";
|
|
57
|
+
wf:dateReceived 2000-01-12;
|
|
58
|
+
wf:earliestDate 1999-12-12;
|
|
59
|
+
wf:latestDate 2001-12-12;
|
|
60
|
+
|
|
61
|
+
wf:description "Yadda Tadda yadda ";
|
|
62
|
+
rdfs:comment "This is a comment".
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# ENDS
|
|
67
|
+
|
package/issuePane.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Issue Tracker Pane
|
|
1
|
+
/* Issue Tracker Pane
|
|
2
2
|
**
|
|
3
3
|
** This solid view allows a user to interact with an issue tracker, or individual issue,
|
|
4
4
|
** to change its state according to an ontology, comment on it, etc.
|
|
@@ -11,6 +11,7 @@ import { board } from './board' // @@ will later be in solid-UI
|
|
|
11
11
|
import { renderIssue, renderIssueCard, getState, exposeOverlay } from './issue'
|
|
12
12
|
import { newTrackerButton } from './newTracker'
|
|
13
13
|
import { newIssueForm } from './newIssue'
|
|
14
|
+
import { csvButton } from './csvButton'
|
|
14
15
|
import { trackerSettingsFormText } from './trackerSettingsForm.js'
|
|
15
16
|
// import { trackerInstancesFormText } from './trackerInstancesForm.js'
|
|
16
17
|
|
|
@@ -355,6 +356,7 @@ export default {
|
|
|
355
356
|
}
|
|
356
357
|
function renderSettings (tracker) {
|
|
357
358
|
const settingsDiv = dom.createElement('div')
|
|
359
|
+
settingsDiv.appendChild(csvButton(dom, tracker)) // Button to copy the tracker as a CSV file
|
|
358
360
|
const states = kb.any(tracker, ns.wf('issueClass'))
|
|
359
361
|
const views = [tableView, states] // Possible default views
|
|
360
362
|
.concat(kb.each(tracker, ns.wf('issueCategory')))
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issue-pane",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Solid-compatible Panes: issue editor",
|
|
5
5
|
"main": "./issuePane.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "echo nothing to build",
|
|
8
8
|
"lint": "eslint '*.js'",
|
|
9
9
|
"lint-fix": "eslint '*.js' --fix",
|
|
10
|
+
"start": "webpack serve --config webpack.dev.config.js --open",
|
|
10
11
|
"test": "npm run lint",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
12
|
+
"prepublishOnly": "npm test",
|
|
13
|
+
"postpublish": "git push origin main --follow-tags"
|
|
13
14
|
},
|
|
14
15
|
"repository": {
|
|
15
16
|
"type": "git",
|
|
@@ -40,11 +41,16 @@
|
|
|
40
41
|
"@eslint/compat": "^1.2.6",
|
|
41
42
|
"@eslint/eslintrc": "^3.2.0",
|
|
42
43
|
"@eslint/js": "^9.19.0",
|
|
44
|
+
"babel-loader": "^10.0.0",
|
|
43
45
|
"eslint": "^9.19.0",
|
|
44
46
|
"eslint-plugin-import": "^2.31.0",
|
|
45
47
|
"globals": "^15.14.0",
|
|
48
|
+
"html-webpack-plugin": "^5.6.3",
|
|
46
49
|
"husky": "^9.1.7",
|
|
47
|
-
"lint-staged": "^15.4.3"
|
|
50
|
+
"lint-staged": "^15.4.3",
|
|
51
|
+
"node-polyfill-webpack-plugin": "^4.1.0",
|
|
52
|
+
"webpack-cli": "^6.0.1",
|
|
53
|
+
"webpack-dev-server": "^4.15.2"
|
|
48
54
|
},
|
|
49
55
|
"husky": {
|
|
50
56
|
"hooks": {
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
#Processed by Id
|
|
2
|
+
# using base file:///Users/timbl_1/src/github.com/solidos/solidos/workspaces/issue-pane/test/big-tracker-config.ttl
|
|
3
|
+
@prefix : <tracker.n3#> .
|
|
4
|
+
@prefix ca: <https://olarkin.inrupt.net/profile/card#> .
|
|
5
|
+
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
|
|
6
|
+
@prefix doap: <http://usefulinc.com/ns/doap#> .
|
|
7
|
+
@prefix flow: <http://www.w3.org/2005/01/wf/flow#> .
|
|
8
|
+
@prefix ical: <http://www.w3.org/2002/12/cal/ical#> .
|
|
9
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
10
|
+
@prefix ui: <http://www.w3.org/ns/ui#> .
|
|
11
|
+
|
|
12
|
+
:Accepted a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
13
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Will go ahead. We are working on this";
|
|
14
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Accepted, in progress";
|
|
15
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
16
|
+
:MotherIssue;
|
|
17
|
+
ui:sortOrder 50 .
|
|
18
|
+
|
|
19
|
+
:Action a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
20
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "action";
|
|
21
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
22
|
+
ui:backgroundColor "#eeeeff";
|
|
23
|
+
ui:sortOrder 80 .
|
|
24
|
+
|
|
25
|
+
:AttendConference a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
26
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "attend conference";
|
|
27
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
28
|
+
ui:backgroundColor "#fcfce8";
|
|
29
|
+
ui:sortOrder 50 .
|
|
30
|
+
|
|
31
|
+
:Book a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
32
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "book";
|
|
33
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
34
|
+
ui:backgroundColor "#eeffee";
|
|
35
|
+
ui:sortOrder 70 .
|
|
36
|
+
|
|
37
|
+
:CommercialSpeaking a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
38
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "commercial speaking";
|
|
39
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
40
|
+
ui:backgroundColor "#ffcbad";
|
|
41
|
+
ui:sortOrder 30 .
|
|
42
|
+
|
|
43
|
+
:Declined a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
44
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Declined";
|
|
45
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "declined";
|
|
46
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
47
|
+
:MotherIssue;
|
|
48
|
+
ui:sortOrder 30 .
|
|
49
|
+
|
|
50
|
+
:Discussing a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
51
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Being discussed";
|
|
52
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "in discussion";
|
|
53
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
54
|
+
:MotherIssue;
|
|
55
|
+
ui:sortOrder 80 .
|
|
56
|
+
|
|
57
|
+
:Done a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
58
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Completed.";
|
|
59
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "done";
|
|
60
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
61
|
+
:MotherIssue;
|
|
62
|
+
ui:sortOrder 20 .
|
|
63
|
+
|
|
64
|
+
:Film a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
65
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "film";
|
|
66
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
67
|
+
ui:backgroundColor "#eeffff";
|
|
68
|
+
ui:sortOrder 80 .
|
|
69
|
+
|
|
70
|
+
:HonoraryDegree a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
71
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "honorary degree";
|
|
72
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
73
|
+
ui:backgroundColor "#ffa8ab";
|
|
74
|
+
ui:sortOrder 40 .
|
|
75
|
+
|
|
76
|
+
:Meeting a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
77
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "meeting request";
|
|
78
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
79
|
+
ui:backgroundColor "#e8e8ff";
|
|
80
|
+
ui:sortOrder 60 .
|
|
81
|
+
|
|
82
|
+
:MotherIssue a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
83
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Request";
|
|
84
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Task;
|
|
85
|
+
owl:disjointUnionOf (
|
|
86
|
+
:New
|
|
87
|
+
:Discussing
|
|
88
|
+
:Pending
|
|
89
|
+
:Negotiating
|
|
90
|
+
:Accepted
|
|
91
|
+
:Urgent
|
|
92
|
+
:ToBeDeclined
|
|
93
|
+
:Watchlist
|
|
94
|
+
:Declined
|
|
95
|
+
:Obsolete
|
|
96
|
+
:Done ) .
|
|
97
|
+
|
|
98
|
+
:Negotiating a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
99
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Being negotiated";
|
|
100
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "negotiating";
|
|
101
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
102
|
+
:MotherIssue;
|
|
103
|
+
ui:sortOrder 60 .
|
|
104
|
+
|
|
105
|
+
:New a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
106
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> """Has not been looked at.
|
|
107
|
+
This is the initial state normally when an issue is created.""";
|
|
108
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "new";
|
|
109
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
110
|
+
:MotherIssue;
|
|
111
|
+
ui:sortOrder 90 .
|
|
112
|
+
|
|
113
|
+
:NonProfitSpeaking a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
114
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "non-profit speaking";
|
|
115
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
116
|
+
ui:backgroundColor "#fffed0";
|
|
117
|
+
ui:sortOrder 20 .
|
|
118
|
+
|
|
119
|
+
:Obsolete a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
120
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Overtaken by time or events.";
|
|
121
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "obsolete/missed";
|
|
122
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Closed,
|
|
123
|
+
:MotherIssue;
|
|
124
|
+
ui:sortOrder 10 .
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
:OtherRequest a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
128
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "other";
|
|
129
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
130
|
+
ui:backgroundColor "#eeeeee";
|
|
131
|
+
ui:sortOrder 90 .
|
|
132
|
+
|
|
133
|
+
:Pending a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
134
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Waiting for someone else's input.";
|
|
135
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "pending others";
|
|
136
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
137
|
+
:MotherIssue;
|
|
138
|
+
ui:sortOrder 75 .
|
|
139
|
+
|
|
140
|
+
:PressRequest a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
141
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "press";
|
|
142
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> :RequestCategory;
|
|
143
|
+
ui:backgroundColor "#dccdfc";
|
|
144
|
+
ui:sortOrder 10 .
|
|
145
|
+
|
|
146
|
+
:RequestCategory <http://www.w3.org/2000/01/rdf-schema#label> "category";
|
|
147
|
+
owl:disjointUnionOf (
|
|
148
|
+
:PressRequest
|
|
149
|
+
:NonProfitSpeaking
|
|
150
|
+
:CommercialSpeaking
|
|
151
|
+
:HonoraryDegree
|
|
152
|
+
:AttendConference
|
|
153
|
+
:Meeting
|
|
154
|
+
:Book
|
|
155
|
+
:Film
|
|
156
|
+
:Action
|
|
157
|
+
:OtherRequest ) .
|
|
158
|
+
|
|
159
|
+
:RequestExtrasForm a ui:Form,
|
|
160
|
+
ui:Group;
|
|
161
|
+
<http://purl.org/dc/elements/1.1/title> "Extra details of a request";
|
|
162
|
+
ui:parts (
|
|
163
|
+
[
|
|
164
|
+
a ui:Heading;
|
|
165
|
+
ui:contents "Details:"@en;
|
|
166
|
+
ui:sequence 10 ]
|
|
167
|
+
[
|
|
168
|
+
a ui:DateField;
|
|
169
|
+
ui:property flow:earliestDate;
|
|
170
|
+
ui:sequence 20 ]
|
|
171
|
+
[
|
|
172
|
+
a ui:DateField;
|
|
173
|
+
ui:property flow:latestDate;
|
|
174
|
+
ui:sequence 40 ]
|
|
175
|
+
[
|
|
176
|
+
a ui:Comment;
|
|
177
|
+
ui:contents "The earliest and latest dates are the window for the event, or both the same if fixed."@en;
|
|
178
|
+
ui:sequence 60;
|
|
179
|
+
ui:style "background-color: #ffe;" ]
|
|
180
|
+
[
|
|
181
|
+
a ui:SingleLineTextField;
|
|
182
|
+
ui:property ical:location;
|
|
183
|
+
ui:seuqence 70;
|
|
184
|
+
ui:size 30 ]
|
|
185
|
+
[
|
|
186
|
+
a ui:DateField;
|
|
187
|
+
ui:property flow:dateReceived;
|
|
188
|
+
ui:sequence 80 ]
|
|
189
|
+
[
|
|
190
|
+
a ui:MultiLineTextField;
|
|
191
|
+
ui:property <http://www.w3.org/2000/01/rdf-schema#comment>;
|
|
192
|
+
ui:sequence 90 ] ) .
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
:ToBeDeclined a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
196
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "To be declined";
|
|
197
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "to be declined";
|
|
198
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
199
|
+
:MotherIssue;
|
|
200
|
+
ui:sortOrder 40 .
|
|
201
|
+
|
|
202
|
+
:Urgent a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
203
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "Needs urgent attention";
|
|
204
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "URGENT";
|
|
205
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
206
|
+
:MotherIssue;
|
|
207
|
+
ui:sortOrder 55 .
|
|
208
|
+
|
|
209
|
+
:Watchlist a <http://www.w3.org/2000/01/rdf-schema#Class>;
|
|
210
|
+
<http://www.w3.org/2000/01/rdf-schema#comment> "We will keep this in mind.";
|
|
211
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "watch list";
|
|
212
|
+
<http://www.w3.org/2000/01/rdf-schema#subClassOf> flow:Open,
|
|
213
|
+
:MotherIssue;
|
|
214
|
+
ui:sortOrder 35 .
|
|
215
|
+
|
|
216
|
+
:this a flow:Tracker;
|
|
217
|
+
<http://purl.org/dc/terms/title> "The Big Request Tracker";
|
|
218
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "Request Tracker";
|
|
219
|
+
flow:allowSubIssues :false;
|
|
220
|
+
flow:assigneeClass <http://xmlns.com/foaf/0.1/Person>;
|
|
221
|
+
flow:defaultView flow:TableView;
|
|
222
|
+
flow:description "Requests";
|
|
223
|
+
flow:extrasEntryForm :RequestExtrasForm;
|
|
224
|
+
flow:initialState :New;
|
|
225
|
+
flow:issueCategory :RequestCategory;
|
|
226
|
+
flow:issueClass :MotherIssue;
|
|
227
|
+
flow:propertyList (
|
|
228
|
+
flow:earliestDate
|
|
229
|
+
flow:latestDate
|
|
230
|
+
ical:location
|
|
231
|
+
<http://www.w3.org/2000/01/rdf-schema#comment>
|
|
232
|
+
flow:assignee );
|
|
233
|
+
flow:stateStore <state.n3> .
|
|
234
|
+
|
|
235
|
+
<tracker.n3> <http://www.w3.org/2000/01/rdf-schema#comment> """This file defines a tracker for requests.
|
|
236
|
+
""";
|
|
237
|
+
<http://www.w3.org/2000/01/rdf-schema#label> "A tracker definition file for requests" .
|
|
238
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
@prefix : <#>.
|
|
2
|
+
@prefix dc: <http://purl.org/dc/elements/1.1/>.
|
|
3
|
+
@prefix dct: <http://purl.org/dc/terms/>.
|
|
4
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
|
|
5
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#>.
|
|
6
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
|
|
7
|
+
@prefix ui: <http://www.w3.org/ns/ui#>.
|
|
8
|
+
@prefix wf: <http://www.w3.org/2005/01/wf/flow#>.
|
|
9
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
|
|
10
|
+
@prefix c: </profile/card#>.
|
|
11
|
+
|
|
12
|
+
:Classification
|
|
13
|
+
rdfs:label "Category";
|
|
14
|
+
owl:disjointUnionOf
|
|
15
|
+
( :Specification :Tests :Servers :Clients :DeveloperTools :Vertical ).
|
|
16
|
+
:Clients
|
|
17
|
+
rdfs:comment "Client side frameworks, SDKs and operating systems";
|
|
18
|
+
rdfs:label "Clients";
|
|
19
|
+
rdfs:subClassOf :Classification.
|
|
20
|
+
:DeveloperTools rdfs:label "Developer tools"; rdfs:subClassOf :Classification.
|
|
21
|
+
|
|
22
|
+
:InProgress
|
|
23
|
+
rdfs:label "In progress";
|
|
24
|
+
rdfs:subClassOf wf:Open, :States;
|
|
25
|
+
ui:backgroundColor "#f9ee71"^^xsd:color.
|
|
26
|
+
:NextSession
|
|
27
|
+
rdfs:label "To be done this month";
|
|
28
|
+
rdfs:subClassOf wf:Open, :States;
|
|
29
|
+
ui:backgroundColor "#91fdb9"^^xsd:color.
|
|
30
|
+
:Released
|
|
31
|
+
rdfs:label "Released";
|
|
32
|
+
rdfs:subClassOf wf:Open, :States;
|
|
33
|
+
ui:backgroundColor "#e2a7fb"^^xsd:color.
|
|
34
|
+
:Research
|
|
35
|
+
rdfs:label "Research";
|
|
36
|
+
rdfs:subClassOf wf:Open, :States;
|
|
37
|
+
ui:backgroundColor "#ffffff"^^xsd:color.
|
|
38
|
+
:Servers
|
|
39
|
+
rdfs:label "Solid Server implementations"; rdfs:subClassOf :Classification.
|
|
40
|
+
:Someday
|
|
41
|
+
rdfs:label "Someday pile";
|
|
42
|
+
rdfs:subClassOf wf:Open, :States;
|
|
43
|
+
ui:backgroundColor "#e3e3e3"^^xsd:color.
|
|
44
|
+
:Specification
|
|
45
|
+
rdfs:label "Parts of the Solid specification"; rdfs:subClassOf :Classification.
|
|
46
|
+
:States
|
|
47
|
+
rdfs:label "Task";
|
|
48
|
+
owl:disjointUnionOf
|
|
49
|
+
( :Research :Someday :ToBeDone :NextSession :InProgress :Works :Released ).
|
|
50
|
+
:Tests rdfs:label "Test suites"; rdfs:subClassOf :Classification.
|
|
51
|
+
|
|
52
|
+
:this
|
|
53
|
+
a wf:Tracker;
|
|
54
|
+
dc:author c:me;
|
|
55
|
+
dc:created "2020-07-21T14:00:20Z"^^xsd:dateTime;
|
|
56
|
+
dct:title "Solid Ecosystem: Roadmap";
|
|
57
|
+
wf:assigneeClass foaf:Person;
|
|
58
|
+
wf:defaultView :Classification;
|
|
59
|
+
wf:description
|
|
60
|
+
"""A roadmap for the whole Solid ecosystem.
|
|
61
|
+
See also other linked roadmaps for parts of the ecosystem like the SolidOS, Spec, open source projects, etc.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
""";
|
|
65
|
+
wf:initialState :Someday;
|
|
66
|
+
wf:issueCategory :Classification;
|
|
67
|
+
wf:issueClass :States;
|
|
68
|
+
wf:stateStore <state.ttl>.
|
|
69
|
+
:ToBeDone
|
|
70
|
+
rdfs:label "To Be Done";
|
|
71
|
+
rdfs:subClassOf wf:Open, :States;
|
|
72
|
+
ui:backgroundColor "#e0ffeb"^^xsd:color.
|
|
73
|
+
:Vertical rdfs:label "Apps and Verticals"; rdfs:subClassOf :Classification.
|
|
74
|
+
|
|
75
|
+
:Works
|
|
76
|
+
rdfs:label "Code runs";
|
|
77
|
+
rdfs:subClassOf wf:Open, :States;
|
|
78
|
+
ui:backgroundColor "#dcdbff"^^xsd:color.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
2
|
+
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
|
|
3
|
+
|
|
4
|
+
module.exports = [
|
|
5
|
+
{
|
|
6
|
+
mode: "development",
|
|
7
|
+
entry: ["./dev/index.js"], // was .ts
|
|
8
|
+
plugins: [
|
|
9
|
+
new HtmlWebpackPlugin({ template: "./dev/index.html" }),
|
|
10
|
+
new NodePolyfillPlugin()
|
|
11
|
+
],
|
|
12
|
+
module: {
|
|
13
|
+
rules: [
|
|
14
|
+
{
|
|
15
|
+
test: /\.(js|ts)$/,
|
|
16
|
+
exclude: /node_modules/,
|
|
17
|
+
use: ["babel-loader"],
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
{
|
|
21
|
+
test: /\.ttl$/, // Target text files
|
|
22
|
+
type: 'asset/source', // Load the file's content as a string
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
resolve: {
|
|
28
|
+
extensions: ["*", ".js", ".ts"]
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
devServer: {
|
|
32
|
+
static: './dist'
|
|
33
|
+
},
|
|
34
|
+
devtool: "source-map",
|
|
35
|
+
},
|
|
36
|
+
];
|