Skip to main content

max / makenotwork

7.0 KB · 161 lines History Blame Raw
1 {% extends "base.html" %}
2
3 {% block title %}Export Your Data - Makenot.work{% endblock %}
4 {% block body_attrs %} class="padded-page export-page"{% endblock %}
5
6 {% block head %}
7 {% endblock %}
8
9 {% block content %}
10 {% include "partials/site_header.html" %}
11
12 <div class="container">
13 <a href="/dashboard" class="back-link">&larr; Back to Dashboard</a>
14
15 <header class="dashboard-export-header">
16 <div>
17 <h1 class="page-title">Export Your Data</h1>
18 <p class="subtitle">Download your content, projects, and transaction history.</p>
19 </div>
20 <button class="btn-primary export-all-btn" id="export-all-btn" onclick="exportAll()">
21 Export All
22 </button>
23 </header>
24
25 <div class="export-cards">
26 <div class="export-card">
27 <div class="export-card-info">
28 <div class="export-card-title">Projects &amp; Items</div>
29 <div class="export-card-desc">All your project and item metadata including titles, descriptions, prices, and tags.</div>
30 <div class="export-card-meta">JSON format</div>
31 <div class="export-status" id="projects-status"></div>
32 </div>
33 <button class="btn-secondary"
34 hx-post="/api/export/projects"
35 hx-target="#projects-status"
36 hx-swap="innerHTML"
37 hx-indicator="#projects-spinner">
38 Download
39 <span id="projects-spinner" class="htmx-indicator"> ...</span>
40 </button>
41 </div>
42
43 <div class="export-card">
44 <div class="export-card-info">
45 <div class="export-card-title">Sales History</div>
46 <div class="export-card-desc">Record of all sales you've made, including dates, amounts, and item titles.</div>
47 <div class="export-card-meta">CSV format</div>
48 <div class="export-status" id="sales-status"></div>
49 </div>
50 <button class="btn-secondary"
51 hx-post="/api/export/sales"
52 hx-target="#sales-status"
53 hx-swap="innerHTML"
54 hx-indicator="#sales-spinner">
55 Download
56 <span id="sales-spinner" class="htmx-indicator"> ...</span>
57 </button>
58 </div>
59
60 <div class="export-card">
61 <div class="export-card-info">
62 <div class="export-card-title">Collaborator Payouts</div>
63 <div class="export-card-desc">Record of all revenue shared with collaborators on your projects, both incoming and outgoing.</div>
64 <div class="export-card-meta">CSV format</div>
65 <div class="export-status" id="splits-status"></div>
66 </div>
67 <button class="btn-secondary"
68 hx-post="/api/export/splits"
69 hx-target="#splits-status"
70 hx-swap="innerHTML"
71 hx-indicator="#splits-spinner">
72 Download
73 <span id="splits-spinner" class="htmx-indicator"> ...</span>
74 </button>
75 </div>
76
77 <div class="export-card">
78 <div class="export-card-info">
79 <div class="export-card-title">Purchase History</div>
80 <div class="export-card-desc">Record of all items you've purchased, for your personal records.</div>
81 <div class="export-card-meta">CSV format</div>
82 <div class="export-status" id="purchases-status"></div>
83 </div>
84 <button class="btn-secondary"
85 hx-post="/api/export/purchases"
86 hx-target="#purchases-status"
87 hx-swap="innerHTML"
88 hx-indicator="#purchases-spinner">
89 Download
90 <span id="purchases-spinner" class="htmx-indicator"> ...</span>
91 </button>
92 </div>
93
94 <div class="export-card">
95 <div class="export-card-info">
96 <div class="export-card-title">Followers &amp; Members</div>
97 <div class="export-card-desc">List of users who follow you or have memberships to your projects.</div>
98 <div class="export-card-meta">CSV format</div>
99 <div class="export-status" id="followers-status"></div>
100 </div>
101 <button class="btn-secondary"
102 hx-post="/api/export/followers"
103 hx-target="#followers-status"
104 hx-swap="innerHTML"
105 hx-indicator="#followers-spinner">
106 Download
107 <span id="followers-spinner" class="htmx-indicator"> ...</span>
108 </button>
109 </div>
110
111 {% if has_content %}
112 <div class="export-card">
113 <div class="export-card-info">
114 <div class="export-card-title">Content Files</div>
115 <div class="export-card-desc">All your uploaded audio files, cover images, version downloads, and dynamic clips.</div>
116 <div class="export-card-meta">ZIP archive ({{ content_size }})</div>
117 <div class="export-status" id="content-status"></div>
118 </div>
119 <button class="btn-secondary"
120 hx-post="/api/export/content"
121 hx-target="#content-status"
122 hx-swap="innerHTML"
123 hx-indicator="#content-spinner">
124 Download
125 <span id="content-spinner" class="htmx-indicator"> ...</span>
126 </button>
127 </div>
128 {% endif %}
129 </div>
130
131 <div class="export-note">
132 <h3>About Your Data</h3>
133 <p>Your data belongs to you. These exports contain everything we store about your account and content. If you're planning to delete your account, we recommend downloading your data first.</p>
134 </div>
135 </div>
136
137 <script>
138 function exportAll() {
139 var btn = document.getElementById('export-all-btn');
140 var buttons = document.querySelectorAll('.export-card button.secondary');
141 if (buttons.length === 0) return;
142
143 btn.disabled = true;
144 btn.textContent = 'Exporting...';
145 var i = 0;
146
147 function next() {
148 if (i >= buttons.length) {
149 btn.textContent = 'Done';
150 setTimeout(function() { btn.textContent = 'Export All'; btn.disabled = false; }, 3000);
151 return;
152 }
153 buttons[i].click();
154 i++;
155 setTimeout(next, 1500);
156 }
157 next();
158 }
159 </script>
160 {% endblock %}
161